package com.test.multithread.lock.reentrantLock;

public class main {
    public static void main(String[] args) {
        RenntrankLock_test renntrankLock_test = new RenntrankLock_test();
        ThreadA threadA = new ThreadA(renntrankLock_test);
        ThreadB threadB = new ThreadB(renntrankLock_test);
        ThreadC threadC = new ThreadC(renntrankLock_test);
        threadA.setName("A");
        threadB.setName("B");
        threadC.setName("C");
        threadA.start();
        threadB.start();
        threadC.start();

        //先执行线程B的方法，线程B获得锁，再执行sleep方法时，不释放锁，
        // 所以执行非同步方法所在的线程C，C进入sleep，执行B剩下的，B执行结束，
        // 释放锁，C执行结束，A抢到锁，执行A到结束。
        //todo 对于这里的问题，需要注意的是：sleep和wait的区别，也可以通过这个方法来看lock的底层原理
    }
}
